/**
 * 二分查找适合有顺序的元素
 * @param {*} arr 
 * @param {*} x 
 * @returns 
 */
function binarySearch(arr, x) {
    let l = 0,//左边界
        r = arr.length - 1, //右边界
        guess; //猜想位置

    while (l <= r) {
        // 在中间位置取值
        guess = Math.floor((l + r) / 2);

        if (arr[guess] === x) return guess; //如果找到了直接返回

        if (arr[guess] < x) {  //如果当前值小于x说明值在右边，向右查找
            l = guess + 1
        } else {
            // 向左查找
            r = guess - 1;
        }

    }
    // 如果循环终止，说明没有找到，直接返回-1
    return -1;
}

const a1 = [1,2,3,55,6,77,88,90,100]

console.log(binarySearch(a1, 8));